package com.xlh.service.courseTest.check;

import com.xlh.dto.PageDTO;
import com.xlh.dto.course.StatisticsDTO;
import com.xlh.dto.courseTest.check.CheckDTO;
import com.xlh.dto.courseTest.check.ClassDTO;
import com.xlh.dto.courseTest.check.StudentListDTO;
import com.xlh.dto.user.ClassCourseDTO;
import com.xlh.enums.courseTest.CheckEnum;
import com.xlh.param.check.CheckClassParam;
import com.xlh.param.check.CheckSubmitParam;

import java.util.List;
import java.util.Map;

/**
 * @author zhr 2019/4/3
 */
public interface CheckService {

    /**
     * 获取批阅随堂练习列表
     */
    List<ClassDTO> listClass(List<Long> classIds, Integer type, Long courseId, Long userId);

    /**
     * 读取批阅详情
     */
    CheckDTO readDetails(Integer type, Long id, Long chapterId, Long classId, Long courseId);

    void updateJz(Long id, Boolean jz, Long quitId);
    /**
     * 批阅
     */
    CheckDTO read(Long id, CheckSubmitParam param, Integer type);

    /**
     * 获取学生批阅情况列表
     */
    PageDTO<StudentListDTO> listStudent(Integer pageNum, Integer pageSize, Integer type, Long classId, Long chapterId, Integer status, String studentInfo, Long userId);

    /**
     * 批阅下载检测文件是否存在
     * @param courseId
     * @param param
     */
    void archiveCheck(Long courseId, CheckClassParam param);

    /**
     * 归档
     * @param courseId
     * @param param
     */
    void archive(Long courseId, CheckClassParam param);

    StatisticsDTO getClassCheckCount(Map<Long, List<ClassCourseDTO>> courseIdClassIdsMap, CheckEnum checkEnum);

    void deletePractice(Long id);
}
